package org.springframework.boot.dcj.feign;

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;

// url也支持el
// 扫描所有 @FeignClients 的注解的类，并将这些信息注入 Spring IOC 容器中。
// 当定义的 Feign 接口中的方法被调用时，通过JDK的代理的方式，来生成具体的 RequestTemplate。
// 当生成代理时，Feign 会为每个接口方法创建一个 RequestTemplate 对象，该对象封装了 HTTP 请求需要的全部信息

// 这里其实是父子容器的概念,当前类也会创建一个Bean放入IOC,但是这个IOC是新的,其父容器是user对应的容器,user的父容器是bootstrap
@FeignClient(name = "order", fallbackFactory = OrderFallbackFactory.class)
public interface OrderClient {

	@GetMapping("/order/info")
	@LoadBalanced
	// 配置了限流等会抛出异常 Blocked by Sentinel (flow limiting)
	String getOrder();
}
